package com.company.loganalyzer.tools;

import com.company.loganalyzer.dto.ToolInput;
import com.company.loganalyzer.dto.ToolResult;
import reactor.core.publisher.Mono;

/**
 * 日志分析工具接口
 * 
 * 定义所有日志分析工具的统一接口
 * 对应Python版本的@tool装饰器功能
 */
public interface LogAnalysisTool {

    /**
     * 获取工具名称
     */
    String getName();

    /**
     * 获取工具描述
     */
    String getDescription();

    /**
     * 获取工具支持的参数
     */
    String[] getSupportedParameters();

    /**
     * 执行工具
     * 
     * @param input 输入参数
     * @return 执行结果
     */
    Mono<ToolResult> execute(ToolInput input);

    /**
     * 检查工具是否可以处理该请求
     * 
     * @param input 输入参数
     * @return 是否可以处理
     */
    boolean canHandle(ToolInput input);

    /**
     * 获取工具优先级（数字越小优先级越高）
     */
    default int getPriority() {
        return 100;
    }

    /**
     * 工具执行超时时间（秒）
     */
    default int getTimeoutSeconds() {
        return 30;
    }
}